public class Code1 {
    // 珠宝的最高价值

    public int jewelleryValue(int[][] frame) {
        // 1、创建 dp 表
        // 2、初始化
        // 3、填表
        // 4、返回值

        // 首先创建出一个 dp 表
        // 这里的 dp 表是从上到下，从左到右得出最大值的，所以该数组比题中给的数组要大一圈

        int m = frame.length;
        int n = frame[0].length;

        int[][] dp = new int[m + 1][n + 1];
        for(int i = 1;i <= m;i++){
            for(int j = 1;j <= n;j++){
                // 需要注意的是，这里要准确的获取到当前要 + 的下一部分值，是需要在当前创建的数组的基础上 -1 操作的。
                dp[i][j] = Math.max(dp[i][j-1],dp[i-1][j]) + frame[i-1][j-1];
            }
        }
        return dp[m][n];
    }
}
